1
선형 배열을 넘어선 다차원 데이터로 확장하기
AI032Lesson 4
00:00

환영합니다 위대한 이양. CPU 프로그래밍에서는 우리가 어떻게 반복문을 정의하지만, GPGPU에서는 우리가 무엇 반복문이 어떻게 보이는지를 정의합니다. 명령어 중심에서 데이터 중심으로의 전환은 커널 추상화에 의해 가능해집니다.

1. __global__ 블루프린트

다음과 같은 방식으로 사용함으로써 __global__ qualified를 사용하면 함수를 작성하는 것이 아니라, 확장 가능한 블루프린트확장 가능한 블루프린트를 설계하는 것입니다. 단일 커널 실행은 독립적인 작업 단위를 나타내며, 수천 개의 동일한 작업을 수많은 코어를 통해 자동으로 조정할 수 있게 해줍니다. 수동 스레드 관리 없이도 말입니다.

2. 글로벌 주소 해결기

수백만 개 중 하나의 스레드가 자신의 대상 위치를 어떻게 찾을까요? 그것은 인덱싱 공식이라고 알려진 결정론적 계약을 사용합니다:

$$\text{스레드ID} = \text{blockIdx.x} \times \text{blockDim.x} + \text{threadIdx.x}$$

이 공식은 소프트웨어의 논리적 데이터(배열)와 하드웨어의 물리적 계층 구조(블록과 스레드) 사이를 연결하는 좌표계 역할을 합니다.

글로벌 메모리 배열 (1,000만 요소)블록 0블록 1블록 N-1인덱스 = 1 × blockDim + threadIdx

3. 실행 구성

그리드 형상을 정의하는 <<<B, T>>> 매개변수는 그리드 형상을 정의합니다. 이는 투명한 확장성코드가 2개의 SM이 있는 하드웨어든 80개의 SM이 있는 하드웨어든 동일한 로직을 수행하도록 보장합니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>